/**
 * Moonshot API适配器
 *
 * Moonshot API的请求格式与标准OpenAI格式略有不同
 * 这个适配器处理格式转换
 */

class MoonshotAdapter {
    /**
     * 转换请求格式为Moonshot兼容格式
     */
    static transformRequest(requestBody) {
        // 检查是否包含图像数据
        const message = requestBody.messages[0];
        if (!message.content || !Array.isArray(message.content)) {
            return requestBody; // 如果不是数组格式，直接返回
        }

        // 查找图像内容
        const imageContent = message.content.find(item => item.type === 'image_url');
        const textContent = message.content.find(item => item.type === 'text');

        if (imageContent && textContent) {
            // Moonshot API可能使用不同的多模态格式
            // 尝试方案1：将图片base64直接包含在文本中
            const base64Data = imageContent.image_url.url;
            const base64Content = base64Data.startsWith('data:image/') ?
                base64Data.substring(base64Data.indexOf(',') + 1) : base64Data;

            // 确保文本内容正确提取
            let text;
            if (typeof textContent.text === 'string') {
                text = textContent.text;
            } else if (textContent.text && typeof textContent.text === 'object') {
                // 如果text是对象，尝试提取prompt字段
                text = textContent.text.prompt || JSON.stringify(textContent.text);
            } else {
                text = String(textContent.text);
            }

            const moonshotRequest = {
                model: requestBody.model,
                messages: [
                    {
                        role: 'user',
                        content: text + '\n\n图片数据（base64）：\n' + base64Content
                    }
                ],
                max_tokens: requestBody.max_tokens,
                temperature: requestBody.temperature
            };

            console.log('🔄 转换为Moonshot文本格式（base64内嵌）：', JSON.stringify(moonshotRequest, null, 2));
            return moonshotRequest;
        }

        return requestBody;
    }

    /**
     * 转换响应格式为标准格式
     */
    static transformResponse(response) {
        console.log('🔍 Moonshot API 原始响应:', JSON.stringify(response, null, 2));

        // Moonshot的响应格式实际上和OpenAI兼容
        // 直接返回原始响应，让调用方处理
        return response;
    }

    /**
     * 判断是否为Moonshot API
     */
    static isMoonshotApi(baseURL) {
        return baseURL.includes('moonshot.cn');
    }
}

module.exports = MoonshotAdapter;